function fillAuthTree() {
    // 存储zTree参数
    var setting = {
        "data" : {
            // 从服务器获取的auth数据，交给ztree组装
            "simpleData" : {
                // 开启简单JSON功能
                "enable" : true,
                "pIdKey" : "categoryId"
            },
            "key" : {
                "name": "title"
            }
        },
        "check" : {
            "enable" : true
        }

    };


    // 获取生成zTree的数据
    var ajaxResult = $.ajax({
        "url" : "assign/get/all/auth.json",
        "type" : "post",
        "dataType" : "json",
        "async" : false
    });

    if(ajaxResult.status != 200) {
        layer.msg("请求权限数据出错，状态码：" + ajaxResult.status
        + "错误信息：" + ajaxResult.statusText);
        return;
    }
    // 1.获取服务器返回的数据
    var authList = ajaxResult.responseJSON.data;

    // 2.生成zTree
    $.fn.zTree.init($("#authTreeDemo"), setting, authList);

    // 3.调用zTreeObj对象的方法，让节点默认展开
    var zTreeObj = $.fn.zTree.getZTreeObj("authTreeDemo");
    zTreeObj.expandAll(true);

    // 4.获取已经分配的权限
    ajaxResult = $.ajax({
        "url" : "assign/get/assigned/auth.json",
        "type" : "post",
        "dataType" : "json",
        "data" : {
            "roleId" : window.roleId
        },
        "async" : false
    });

    // 5.检查ajax响应是否正确
    if(ajaxResult.status != 200) {
        layer.msg("请求权限数据出错，状态码：" + ajaxResult.status
            + "错误信息：" + ajaxResult.statusText);
        return;
    }

    // 6.获取服务器返回的数据
    var authIdList = ajaxResult.responseJSON.data;

    // 7.遍历authIdList
    for (var i = 0; i < authIdList.length; i++) {
        var authId = authIdList[i];

        // 根据id查询tree中的对应节点
        var node = zTreeObj.getNodeByParam("id", authId);

        // 将node设置为被勾选
        // checked为true 表示勾选节点
        var checked = true;
        var checkTypeFlag = false;
        zTreeObj.checkNode(node, checked, checkTypeFlag);
    }



}

// 弹出确认删除Role的模态框
function showConfirmRoleModal(roleArray) {

    // 预先清空数据
    $("#roleNameDiv").empty();

    $("#confirmModal").modal("show");

    // 生成roleArray
    window.roleIDArray = [];

    for (var i = 0; i < roleArray.length; i++) {

        // 取出id和name
        var roleId = roleArray[i].roleId;
        var roleName = roleArray[i].roleName;

        // 显示标签
        var p = "<p>" + roleName + "</p>";
        $("#roleNameDiv").append(p);

        // 存放roleId到全局变量中
        window.roleIDArray.push(roleId);
    }
}


// 分页初始化,生成页面效果，任何时间调用这个函数都会重新加载页面
function generatePage() {

    // 1.获取pageInfo
    var pageInfo = getPageInfoRemote();

    // 2.填充TBody
    fillTBody(pageInfo);

    // 初始化导航栏
    generateNavigator(pageInfo);
}

// 获取pageInfo
function getPageInfoRemote() {
    var ajaxResult = $.ajax({
        "url" : "role/get/data/info.json",
        "type" : "post",
        "data" : {
            "pageNum" : window.pageNum,
            "pageSize" : window.pageSize,
            "keyword" : window.keyword
        },
        "dataType" : "json",
        "async" : false,
        "success" : function (res) {

        },
        "error" : function (res) {

        }
    });

    // 拿到ajaxResult响应码
    var statusCode = ajaxResult.status;

    if(statusCode != 200) {
        layer.msg("失败！响应代码：" + statusCode +
            "失败信息：" + ajaxResult.responseText);
    }

    // 如果响应码200
    var resultEntity = ajaxResult.responseJSON;


    // 判断resultEntity是否成功
    if(resultEntity.state == "ERROR") {
        layer.msg(resultData.message);
        return null;
    }

    // 如果成功则获取PageInfo
    var pageInfo = resultEntity.data;

    return pageInfo;
}

// 填充表格
function fillTBody(pageInfo) {

    // 首先清空表格中的旧数据
    $("#rolePageTBody").empty();
    $("#Pagination").empty();

    // 判断pageInfo是否有效
    if(pageInfo == null || pageInfo == undefined || pageInfo.list == null || pageInfo.list.length == 0) {
        $("#rolePageTBody").append("<tr><td colspan='4' align='center'>抱歉！没有找到数据！</td></tr>");
        return;
    }


    for (var i = 0; i < pageInfo.list.length; i++) {

        var role = pageInfo.list[i];
        var roleId = role.id;
        var roleName = role.name;


        var numberTd = "<td>" + (i + 1) + "</td>";
        var checkboxTd = "<td><input type='checkbox' id='" + roleId + "' class='roleCheckbox'></td>";
        var roleNameTd = "<td>" + roleName + "</td>";


        var checkBtn = "<button type='button' id='" + roleId + "' class='btn btn-success btn-xs checkBtn'><i class=' glyphicon glyphicon-check'></i></button>"
        // 铅笔按钮用于修改role信息。用id属性（也可以是其他属性）携带当前的角色的id，class添加一个pencilBtn，方便添加响应函数
        var pencilBtn = "<button type='button' id='" + roleId + "' class='btn btn-primary btn-xs pencilBtn'><i class=' glyphicon glyphicon-pencil'></i></button>"
        var removeBtn = "<button type='button' id='" + roleId + "' class='btn btn-danger btn-xs removeBtn'><i class=' glyphicon glyphicon-remove'></i></button>"

        // 组合上述三个Btn
        var buttonTd = "<td>" + checkBtn + " " + pencilBtn + " " + removeBtn + "</td>";


        var tr = "<tr>" + numberTd + checkboxTd + roleNameTd + buttonTd + "</tr>";

        $("#rolePageTBody").append(tr);

    }
}

// 生成分页页码导航条
function generateNavigator(pageInfo) {

    // 获取总记录数
    var totalRecord = pageInfo.total;

    // 生成json对象存储参数
    var properties = {
        num_edge_entries : 3, // 边缘页数
        num_display_entries: 5, //主体页数
        callback : pageNationCallBack, // 回调函数
        items_per_page: pageInfo.pageSize, // 每页显示多少条
        current_page : pageInfo.pageNum - 1, // 当前页
        prev_text : "上一页",
        next_text : "下一页"
    };

    // 调用pagination()
    $("#Pagination").pagination(totalRecord, properties);
}

// 点击翻页的回调函数
function pageNationCallBack(pageIndex, jQuery) {

    // 拿到pageNum
    window.pageNum = pageIndex + 1;

    // 将全选框取消
    $("#summaryBox").prop("checked", false);

    // 调用初始化函数
    generatePage();

    return false;
}